package com.example.backend_422.controller;


import com.example.backend_422.common.Result;
import com.example.backend_422.records.Order;
import com.example.backend_422.service.impl.OrderServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import org.springframework.stereotype.Controller;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author xwyzsn
 * @since 2023-04-22
 */
@RestController // @RestController = @Controller + @ResponseBody
@RequestMapping("/order") // URL地址映射,这里的地址是http://localhost:8085/order
@CrossOrigin(origins = "*",maxAge = 3600) // 允许跨域
public class OrderController {

    @Autowired
    private OrderServiceImpl orderService; // 注入Service

    @PostMapping("preserve") // URL地址映射，预约时间
    // 接受前端传来的参数,Order类的所有属性
    public Result preserveTime(@RequestBody Order order){
        return    orderService.preserveTime(order);
    } // 调用Service层的方法，具体实现在ServiceImpl层,说明也在ServiceImpl层

    @GetMapping("getByUserId")// URL地址映射，根据用户id查询
    // 接受前端传来的参数，参数名为userId，类型为String
    public Result getByUserId(@RequestParam("userId") String userId){
        return orderService.getByUserId(userId);
    }// 调用Service层的方法，具体实现在ServiceImpl层,说明也在ServiceImpl层

    @GetMapping("cancel")// URL地址映射，取消预约
    // 接受前端传来的参数，参数名为orderId，类型为Integer
    public Result cancelByOrderId(@RequestParam("orderId") Integer orderId){
        // 调用Service层的方法，具体实现在ServiceImpl层,说明也在ServiceImpl层
        return orderService.cancelByOrderId(orderId);
    }

    @GetMapping("getByLandlordId") // URL地址映射，根据房东id查询
    // 接受前端传来的参数，参数名为landlordId，类型为Integer
    public Result getByLandlordId(@RequestParam("landlordId") Integer landlordId){
        // 调用Service层的方法，具体实现在ServiceImpl层,说明也在ServiceImpl层
        return orderService.getByLandlordId(landlordId);
    }

    @PutMapping("updateStatus") // URL地址映射，更新订单状态
    // 接受前端传来的参数，参数名为orderId，类型为Integer，status，类型为String
    public Result updateStatus(@RequestParam("orderId") Integer orderId,
                               @RequestParam("status") String status){
        // 调用Service层的方法，具体实现在ServiceImpl层,说明也在ServiceImpl层
        return orderService.updateStatus(orderId,status);
    }

}
